<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS学习</title>
    <script src="./js.js">

    </script>
    <script>
        // console.log({}==={});

        // var out_num = 1;

        // function addOne(in_num){
        //     in_num += 1;
        //     return in_num;
        // }
        // console.log(addOne(out_num));
        // console.log(out_num);

        // console.log(1===1);
        // console.log({}=={});

        // var out_obj = {value:1};

        // function addOne(in_obj){
        //     in_obj.value += 1;
        //     return in_obj;
        // }
        // console.log(addOne(out_obj));
        // console.log(out_obj);

        // var out_obj = {value:1};
        // function addOne(in_obj){
        //     in_obj = {value:2}
        //     return in_obj;
        // }
        // console.log(addOne(out_obj));
        // console.log(out_obj)

        // console.log(typeof null); // => 'object'
        // console.log(typeof[]); // => 'object'

        // console.log({}instanceof Object); // => ture
        // console.log([]instanceof Array); // => ture
        // console.log([]instanceof Object); // => ture

        // function Car(make,model,year){
        //     this.make = make;
        //     this.model = model;
        //     this.year = year;
        // }
        // var auto = new Car('Honda','Accord','1998');

        // console.log(auto instanceof Car); // => ture

        // console.log(auto instanceof Object); // => ture

        // // console.log(1 instanceof Number); //根本就不能识别啊！ 为什么还给我解释 => false Maybe是没有定义？下面都是一样
        // // console.log(Number(1) instanceof Number); // => false
        // // console.log(new Number(1) instanceof Number); // => ture 

        // console.log(Object.prototype.toString.call(JSON)); // => [object JSON]

        // if(isTrue){
        //     // ...
        // }else{

        // }

        // console.log(Number(null)); // => 0
        // console.log(Number(undefined));// => NaN
        // console.log(''); // => 0
        // console.log('123'); // => 123
        // console.log('123abc'); // => NaN

        // console.log(parseInt(null)); // => NaN
        // console.log(parseInt(undefined)); // => NaN
        // console.log(parseInt('')); // => NaN
        // console.log(parseInt('123')); // => 123
        // console.log(parseInt('123abc')); // => 123

        // console.log(null==undefined); // => ture
        // console.log(null==0); // => false
        // console.log(undefined==false); // => false

        // console.log('B'<'A'); // => false
        // console.log('B'<'C'); // => true

        // console.log('1'+2); //  '12'
        // console.log(1+2); // 3

        // console.log({value:1}+true); // => "[object Object]true"
        // var a;
        // console.log(a); // undefined
        // var a = 1;
        // console.log(a) // 1

        // for(let i =0;i<4;i++){
        //     setTimeout(function(){
        //         console.log(i);
        //     },i*1000);
        // } // => 逐个输出0,1,2,3

        // for(var i = 0;i<4;i++){
        //     setTimeout(function(){
        //         console.log(i)
        //     },i*1000); 
        // } // => 4,4,4,4

        // const d = 1;
        // const q = {value:1};

        // console.log(d=2); // => Error
        // console.log(q.value =2 ); // => 2
        // console.log(q={value:2}); // => Error 

        // var X = 1;
        // console.log( window.X); // => 1

        // function add(a,b,c){
        //     return c
        // }
        // var add = 123;

        // var Num001 = 12;
        // var Num002 = 13;
        // var Num003 = '12';
        // var str = 'av';

        // // alert(Num001+Num002); // 25
        // // alert(Num001+Num003); // 1212
        // // alert(Num003+str); // 12av
        // // alert(Num002+str); // 13av

        // var str1 = 'Hello';
        // var str2 = 'World';
        // console.log(str1+" "+str2);
        // var str3 = str1.concat(str2);
        // console.log(str3);

        // var Num01 = '12';
        // var Num02 = '13';
        // var Num03 = '13.14';
        // console.log(Num01+Num02); // 1213
        // console.log(parseInt(Num01)+parseInt(Num02)); // 25
        // console.log(parseInt(Num03)); // 13

        // // var Num004 = '13.14';
        // // alert(parseFloat(Num004)); // 弹出13.14 将字符串小数转化为数字小数

        // var str01 = '2020-11-25';
        // var ara = str01.split("-");
        // var ara2 = str01.split("");
        // console.log(ara); // ['2020','11','25']
        // console.log(ara2); // ['2','0','2','0','-','1','1','-','2','5']

        // var id = "#div002";
        // var str004 = id.charAt(1);
        // console.log(str004); // d

        // var str005 = 'abcdefg';
        // var Num0005 = str005.indexOf("h");
        // console.log(Num0005); // -1
        // var Num0006 = str005.indexOf("c");
        // console.log(Num0006); // 2

        // var str0006 = 'abcdefghi';
        // var str0007 = str0006.substring(2,6);
        // var str0008 = str0006.substring(1);

        // console.log(str0007); // cdef
        // console.log(str0008); // bcdefghi

        // var str0009 = "abc";
        // var str0010 = str0009.toUpperCase();
        // console.log(str0010); //ABC

        // var str0011 = 'ABC';
        // var str0012 = str0011.toLowerCase();
        // console.log(str0012); // abc

        // window.onload = function(){
        //     var str = "Hello-World-My-Friend"

        //     // 1. 首先将字符串所有字符拆为数组
        //     // 2. 利用数组的反转方法进行反转
        //     // 3. 使用数组的join方法拼接为字符串
        //     var str01 = str.split('').reverse().join('');
        //     alert(str01);
        // }

        // var str4 = "NBA CBA FIBA";
        // console.log(str4.replace(/CBA/,"and")); // NBA and FIBA

        // console.log(str4.search(/FIBA/)); // 8

        // for(let codePoint of 'adc'){
        //     console.log(codePoint);
        // }
        // // "a"
        // // "b"
        // // "c"

        // console.log('x'.repeat(3)); // "xxx"
        // console.log('NNN'.repeat(0)); // ""
        // console.log('ns'.repeat(2.9)); // "nsns"

        // console.log("ns".repeat(Infinity));
        // console.log("ns".repeat(-1));

        // var str01 = [100, 200, "Hi"];
        // var str02 = ["Mom"];
        // console.log(str01.concat(str02)); // [100,200,"Hi,"Mom]
        // console.log(str01); // [100,200,"Hi"]

        // var str03 = [13, 54, 24, 39, 65, 78];

        // console.log(str03); // [13,54,24,39,65,78]

        // console.log(str03.sort(fn)); // [13,24,39,54,65,78]

        // function fn(a, b) {
        //     return a - b;
        // }

        // var arr = ["Tom", "Jack", "Lucy", "Lily", "May"];
        // var a = arr.forEach(function (value, index, self) {
        //     console.log(value + "--" + index + "--" + (arr === self));
        // })
        // // 打印结果为：
        // // Tom--0--true
        // // Jack--1--true
        // // Lucy--2--true
        // // Lily--3--true
        // // May--4--true
        // console.log(a);     //undefined---forEach没有返回值
        // //该方法为遍历方法，不会修改原数组

        // //功能1：同forEach
        // var arr = ["Tom", "Jack", "Lucy", "Lily", "May"];
        // var a = arr.map(function (value, index, self) {
        //     console.log(value + "--" + index + "--" + (arr === self))
        // })
        // // 打印结果为：
        // // Tom--0--true
        // // Jack--1--true
        // // Lucy--2--true
        // // Lily--3--true
        // // May--4--true

        // //功能2：每次回调函数的返回值被map组成新数组返回
        // var arr = ["Tom", "Jack", "Lucy", "Lily", "May"];
        // var a = arr.map(function (value, index, self) {
        //     return "hi:" + value;
        // })
        // console.log(a);     //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"]
        // console.log(arr);   //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

        // //功能1：同forEach
        // var arr = ["Tom", "Jack", "Lucy", "Lily", "May"];
        // var a = arr.filter(function (value, index, self) {
        //     console.log(value + "--" + index + "--" + (arr === self))
        // })
        // // 打印结果为：
        // // Tom--0--true
        // // Jack--1--true
        // // Lucy--2--true
        // // Lily--3--true
        // // May--4--true

        // //功能2：当回调函数的返回值为true时，本次的数组值返回给filter，被filter组成新数组返回
        // var arr = ["Tom", "Jack", "Lucy", "Lily", "May"];
        // var a = arr.filter(function (value, index, self) {
        //     return value.length > 3;
        // })
        // console.log(a);         //["Jack", "Lucy", "Lily"]
        // console.log(arr);       //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

        // //
        // // var num=prompt("请输入成绩",);
        // // var str;
        // // if (num >= 90) {
        // // str = "优秀";
        // // } else if (num >= 80) {
        // // str = "优良";
        // // } else if (num >= 70) {
        // // str = "良好";
        // // } else if (num >= 60) {
        // // str = "合格";
        // // } else {
        // // str = "不合格";
        // // }
        // // document.write("成绩是:" + str);

        // var test = { x: 123, y: 456 };
        // console.log(test); // {x:123,y:456};
        // console.log(test.x); // {123}
        // console.log(test.__proto__.x); // undefined
        // console.log(test.__proto__.x === test.x); // false

        // var test1 = new Object({ x: 123, y: 456 });
        // console.log(test1); // {x:123,y:456};
        // console.log(test1.x); // {123}
        // console.log(test.__proto__.x); // undefined
        // console.log(test.__proto__.x === test.x); // false

        // let test2 = Object.create({ x: 123, y: 456 });
        // console.log(test2); // {}
        // console.log(test2.x); // 123
        // console.log(test2.__proto__.x); // 123
        // console.log(test2.__proto__.y === test2.y); // true

        // const object1 = {
        //     property1: 42
        // };

        // const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');

        // console.log(descriptor1.configurable);
        // // expected output: true

        // console.log(descriptor1.value);
        // // expected output: 42


        // let x = new Map(); //创建一个Map
        // //undefined
        // x.set(0,'what\'s this?'); //往Map里添加键，值
        // // Map(1){0=>'what\'s this?'}
        // console.log(x.get(0)); // 根据键获取相对应值
        // // what\'s this?


        // let set = new Set([1,1,2,3,4,4,5]);
        // console.log(set); // 1,2,3,4,5
        // set.add(66) // 增加
        // console.log(set); // 1,2,3,4,5,66
        // set.delete(1) //删除
        // console.log(set); //2,3,4,5,66
        // console.log(set.size); //长度 5
    </script>
</head>

<body>
    <style style="display:block; position: fixed;" contentEditable>
        body {
            background: red;
        }
    </style>

</body>

</html>